<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /* 
            1.pending:初始状态-等待状态-等待promise的状态切换
            2.fulfilled|resolved:对应的promise的构建执行函数，第一个回调方法，只有promise的执行函数中，调用resolve函数，才会将状态切换为fulfilled|resolved
                将后续的回调函数执行指向then的第一个函数参数
            3.rejected：对应的promise的构建执行函数，第二个回调方法，只有promise的执行函数中，调用reject函数，才会将状态切换为rejected
                将后续的回调函数执行指向then的第二个函数参数 
        */

        // var p=new Promise(function(resolve,reject){
        //     // resolve();
        //     // reject();
        // });
        // console.log(p);

        function createPromise(){
            let handle=function(resolve,reject){
                //resolve(); 
                // reject();
                // try{
                //     // console.log(aaa);
                //     resolve();
                // }catch(e){
                //     reject();
                // }
            };
            var p=new Promise(handle);
            return p;
        }
        var p=createPromise();

        console.log(p);
        var p2=p.then(function(){//解决函数|实现函数
            console.log("1-resolved状态");
            // return new Promise(function(resolve,reject){
            //     reject();
            // });
        },function(){//拒绝函数|错误函数
            console.log("1-rejected状态");
            // return new Promise(function(resolve,reject){
            //     resolve();
            // });
        });
        //前面的then函数被调用时候，会返回一个全新的promise对象，如果前一个then中没有返回自定义的promise对象（没有return关键字），返回的全新的promise对象用于监控对前一个then中的函数执行状态
       p2.then(function(){
            console.log("2-resolved状态");
       },function(){//如果上一个then中没有return new Promise，p4的状态的切换依据是js是否正常执行，如果正常，fulfilled，否则rejected
            console.log("2-rejected状态");
       });
       console.log(p2);
    </script>
</head>
<body>
    
</body>
</html>